iT邦幫忙

2

C# Webservice overload

c#
  • 分享至 

  • xImage
  •  

此文同步載於 http://www.dotblogs.com.tw/holmes2136/Default.aspx
有時候在 Webservice 上的一些方法需要採用 overload 的方式來增加

程式的維護姓 , 而這也是 OO 向來的寫法 , 可是對於 Webservice 而言必須

有個唯一的名稱 , 例如當我們在一個服務下建立相同名稱卻不同參數的方法

會馬上遭遇到下列問題 :

但是在 .Net 提供使用 MessageName 屬性來 overload 方法 ,

可是這時候會遭遇到另外一個問題 , 如下圖 :

這時我們可以注意到在我們的 webservice 建立之初都會增加下列字串 ,

[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]

這表示我們的服務必須符合 Web Services Interopability

Organization's (WS-I) Baisc Profile 1.1 的規範 ,

這個規範定義了一堆必須遵守的規則 , 為了解決這個問題 ,

我們可以將上述修改如下 :

[WebServiceBinding(ConformsTo = WsiProfiles.None)]

如此一來將不會再發生上述的問題 , 但是可議的是 , 雖然在 .Net

你可以做到 , 但是並不被鼓勵 , 詳情可見 W3C 組織對這個議題的討論http://www.w3.org/TR/wsdl20/#names-of-elements-within-an-operation
( section 3-6 )

而在 MSDN 也有文章提到 , 可見網址
http://msdn.microsoft.com/en-us/magazine/cc188906.aspx

參考資料 :

WSDL, Web Services, and More
http://msdn.microsoft.com/en-us/magazine/cc188906.aspx
Method overloading in webservices
http://stackoverflow.com/questions/5689033/method-overloading-in-webservices


圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言